/**
 * 
 * @file_name jquery.effects.validate-form layout -1.0.js
 * @Description: TODO input
 * json 整个表单的data
 * @author www@yikuair.com
 * @date 2012-05-08 下午18:37:49 
 */
(function($){
	$.fn.jEffectInput = function(json){
		var $span = this;
		var index=0;
		function clearIcon($obj){
			if($obj.hasClass("inputTipWarnIcon")){
				$obj.removeClass("inputTipWarnIcon");
			}
			if($obj.hasClass("inputTipErrorIcon")){
				$obj.removeClass("inputTipErrorIcon");
			}
			if($obj.hasClass("inputTipPassIcon")){
				$obj.removeClass("inputTipPassIcon");
			}
		}
		function clearBgIcon($obj){
			if($obj.hasClass("effectInput2")){
				$obj.removeClass("effectInput2");
			}
			if($obj.hasClass("effectInput3")){
				$obj.removeClass("effectInput3");
			}
			if($obj.hasClass("effectInput4")){
				$obj.removeClass("effectInput4");
			}
			if($obj.hasClass("effectInput5")){
				$obj.removeClass("effectInput5");
			}
			if($obj.hasClass("effectInput6")){
				$obj.removeClass("effectInput6");
			}
		}

		

		$span.each(function (){
			var $this = $(this);
			var $input = $this.find("input");
			var obj = json[index];
			var flag = true;
			var placeholder = $input.attr("placeholder");
			$input.focus(function (){
				var $inputTipSpan = $this.find(".inputTipSpan");
				var inputTipIcon = $this.find(".inputTipIcon");
				if(!inputTipIcon.length){
					var icon = "<a class='inputTipIcon'></a>";
					$inputTipIcon = $(icon);
					$this.append($inputTipIcon);
				}
				var val = $input.val().trim();
				if((val.length==0)||(placeholder==val)){clearBgIcon($this);$this.addClass("effectInput2");}
				if(((val.length==0)||(placeholder==val))&&obj.isTip){
					var tip = obj.tip;
					if($inputTipSpan.length){
						clearIcon($inputTipIcon);
						$inputTipSpan.find("em").html(tip);
						$inputTipSpan.fadeTo(1000,1);
					} else {
						var string = "<span class='inputTipSpan'><a class='arrow'></a><em>"+tip+"</em></span>";
						var $string = $(string);
						$this.append($string);
						$string.fadeIn(1000);
					}
				} else {
					if((val.length==0)||(placeholder==val)){
						clearIcon($inputTipIcon);
					}
					if($inputTipSpan.length){
						if(!$inputTipIcon.is(".inputTipPassIcon")){
							$inputTipSpan.fadeTo(1000,1);
						}
					}
				}
				
				if($inputTipIcon.is(".inputTipErrorIcon")){
					clearBgIcon($this);$this.addClass("effectInput5");
				}
				
				
			});
			$input.blur(function (){
				
				var $inputTipSpan = $this.find(".inputTipSpan");
				var $inputTipIcon = $this.find(".inputTipIcon");
				var val = $input.val().trim();
				if((val.length==0)||(placeholder==val)){clearBgIcon($this);}
				if((val.length==0)||(placeholder==val)) {
					if(obj.isTip) {
						$inputTipSpan.fadeTo(500,0);
						clearIcon($inputTipIcon);
					}
					return false;
				}
				
				if(obj.isBlurRep) flag = obj.blurRegExp.test(val);
				if(!flag){
					
					var errorTip = obj.formatErrorMsg;
					if(!$inputTipSpan.length){
						var string = "<span class='inputTipSpan'><a class='arrow'></a><em>"+errorTip+"</em></span>";
						var $string = $(string);
						$this.append($string);
						$string.fadeIn(1000);
					} else {
						clearIcon($inputTipIcon);
						clearBgIcon($this);$this.addClass("effectInput4");
						$inputTipIcon.addClass("inputTipErrorIcon");
						$inputTipSpan.find("em").html(errorTip);
						$inputTipSpan.fadeTo(1000,1);
					}
				} else {
					
					//ajax
					if(obj.isblurAjax){
						var ajaxFlag = obj.blurCallback();
						if(ajaxFlag){
							if($inputTipSpan.length){
								clearIcon($inputTipIcon);
								$inputTipIcon.addClass("inputTipPassIcon");
								$inputTipSpan.fadeTo(500,0);
							} 
						} else {
							var ajaxErrorTip = obj.blurAjaxErrorMsg;
							if($inputTipSpan.length) {
								clearIcon($inputTipIcon);
								clearBgIcon($this);$this.addClass("effectInput4");
								$inputTipIcon.addClass("inputTipErrorIcon");
								$inputTipSpan.find("em").html(ajaxErrorTip);
							}
							else {
								var string = "<span class='inputTipSpan'><a class='arrow'></a><em>"+ajaxErrorTip+"</em></span>";
								$this.append($string);
								clearIcon($inputTipIcon);
								$inputTipIcon.addClass("inputTipErrorIcon");
								$string.fadeIn(1000);
							}
							
						}
					} else{
						if($inputTipSpan.length){
							clearIcon($inputTipIcon);
							$inputTipIcon.addClass("inputTipPassIcon");
							$inputTipSpan.fadeTo(500,0);
						} else {
							clearIcon($inputTipIcon);
							$inputTipIcon.addClass("inputTipPassIcon");
						}
					}
				}
			});
			$input.keyup(function (){
				var val = $input.val().trim();
				clearBgIcon($this);
				if(val.length>0){
					$this.addClass("effectInput3");
				} 
			});
			index++;
		});
	};
})(jQuery);